﻿using System;
using System.Collections.Generic;
using System.Linq;

namespace Joel.Vishnu.Modelo.Entidades
{
    public class Factura : EntidadBasePrimera<Int32>
    {
        #region Constructores

        public Factura()
            : base()
        {
        }

        #endregion

        #region Atributos

        private Cliente cliente;
        private Empleado empleado;
        private DateTime fechaHora;
        private List<FacturaDetalle> detalles;
        private Decimal iva;

        #endregion

        #region Propiedades

        public Cliente Cliente
        {
            get { return cliente; }
            set { cliente = value; }
        }

        public String ClienteApellidoNombre
        {
            get { return Cliente.ApellidoNombre; }
        }

        public Empleado Empleado
        {
            get { return empleado; }
            set { empleado = value; }
        }

        public String EmpleadoApellidoNombre
        {
            get { return Empleado.ApellidoNombre; }
        }

        public DateTime FechaHora
        {
            get { return fechaHora; }
            set { fechaHora = value; }
        }

        public List<FacturaDetalle> Detalles
        {
            get { return detalles; }
            set { detalles = value; }
        }

        public Decimal Subtotal
        {
            get
            {
                Decimal subtotal = 0;
                foreach (FacturaDetalle item in detalles)
                {
                    subtotal += item.Subtotal;
                }
                return subtotal;
            }
        }

        public String SubtotalConFormato
        {
            get { return Subtotal.ToString("C2"); }
        }

        public Decimal Iva
        {
            get { return iva; }
            set { iva = value; }
        }

        public String IvaConFormato
        {
            get { return Iva.ToString("C2"); }
        }

        public Decimal Total
        {
            get { return Subtotal + iva; }
        }

        public String TotalConFormato
        {
            get { return Total.ToString("C2"); }
        }

        #endregion
    }
}
